package VideoJuego;

import java.io.IOException;
import java.util.Random;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.game.Sprite;

/**
 * Se encarga de crear los arboles dependiendo del nivel para el escenario
 *
 * Desarrolladores:
 * Equipo: The Dream Team
 *  @author José Francisco Ruiz Martínez 	A01166298
 *  @author José Héctor Bermúdez Robles		A01161142
 *  @author Arturo Ramírez Morales		A01165819
 *  @version 1.0 Noviembre 2010
 */
public class Arbol {

    private Random random;
    private Sprite arbol,arbol2;
    private int contador=0, posicionY=0, posicionX = 185,nivel=1;

    /**
     * Se encarga de crear dos arboles que se dibujaran como parate del escenario
     * @param y indica en q posicion se puede considerar para dibujar
     * @param nivel nos dice el tipo de arbol que se tiene que crear
     * @throws IOException si no encuentra las imagenes lanza una exepción
     */
    public Arbol(int y, int nivel) throws IOException {
        this.nivel=nivel;
        this.contador = 0;
        random = new Random();
        this.posicionY = y - random.nextInt(100) - 210;
        arbol = new Sprite(Image.createImage("/ImagenesJuego/arbolNivel" + this.nivel + ".png"), 150, 115);
        arbol.setPosition(posicionX, posicionY);
        arbol2= new Sprite(Image.createImage("/ImagenesJuego/arbolNivel" + this.nivel + ".png"), 150, 115);
        this.posicionY = y + random.nextInt(100) + 210;
        arbol2.setPosition(posicionX, posicionY);
        }

    /**
     * Se encargade mover los arboles con respecto a como se mueve el esenario
     * @param moverObjetos nos dice si el escenario se esta moviendo a la derecha o izquierda
     */
    public void actualizar(int moverObjetos) {

        mover();
        //Se mueve hacia la derecha o izq
        if (moverObjetos == 1) {
            arbol.move(0, -1);
            arbol2.move(0, -1);
        } else if (moverObjetos == 2) {
            arbol.move(0, 1);
            arbol2.move(0, 1);
        }
    }

    /**
     * Mueve el sprite y cambia de frame dependiendo en que cordenada se encuentran los arboles
     * Esto con el objetvo de crear un efecto de que el personaje se acerca a los arboles
     */
    public void mover() {
        this.arbol.move(-3, 0);
        this.arbol2.move(-3, 0);
        contador += 1;
        if (contador == 10 && arbol.getRefPixelX() > 90) {
            this.arbol.nextFrame();
            this.arbol2.nextFrame();
            contador = 0;
        }

    }

    /**
     * Destruye el arbol
     */
    public void destruir() {
    arbol=null;
    arbol2=null;
    contador=0;
    posicionY=0;
    posicionX = 180;
    }

    /**
     * Dibuja los arboles en la pantalla
     * @param g indica en donde se dibujaran los arboles
     */
    public void dibujar(Graphics g) {
        this.arbol.paint(g);
        this.arbol2.paint(g);
    }

    /**
     * regresa un sprite de un arbol
     * @return
     */
    public Sprite getArboles(){
        return this.arbol;
    }
}
